[INV-BACKEND-026] Создать метод OnVideoStreamConnect()
Реализация WebSocket-сервера оркестрации фреймов и сборки списков
NoteКраткая карточка задачи
- Репозиторий / Компонент:
purchase-stream-worker Стримы V2(Домен INVENTORY). - Контракт метода: WebSocket Handler
OnVideoStreamConnect(). - Ссылка на Метод: Спецификация публикации фактов создания готовых блюд
- Статус: Готово к реализации
- Инструкция по шагам:
- На Шаге 4–5: Обеспечить прием и долгосрочное удержание медиа-потока от клиента. Извлечь проброшенные шлюзом метаданные
x_request_idиapp_lang. - Принимать непрерывный поток сырых бинарных видеофреймов (
Raw Frames) в асинхронном высокопроизводительном цикле. - На Шаге 6: Пересылать каждый прилетевший кадр изображения по gRPC в микросервис
product-vision-processorчерез методTrackVideoFrames. - Перехватывать ответные gRPC-пакеты с массивами координат рамок и именами найденных продуктов и моментально отправлять их обратно в WebSocket-канал клиента (На Шаге 9) для рендеринга Bounding Boxes на экране смартфона пользователя в реальном времени.
- На Шаге 10–12: При получении управляющей команды
STOP_STREAMостановить бесконечный цикл чтения кадров. Выполнить синхронный запрос кIn-Memory Redisдля вычитки агрегированного за всю сессию списка классов продуктов. Очистить сессионный кэш в Redis. - Скомпилировать полученный массив классов в плоскую текстовую строку, упаковать в JSON-пакет (
raw_text_input,app_lang,x_request_id,"source": "STREAM_YOLO_V2") и опубликовать в Kafka-топикbpds.inventory.in.receipt.upload. Закрыть WebSocket-соединение.
- На Шаге 4–5: Обеспечить прием и долгосрочное удержание медиа-потока от клиента. Извлечь проброшенные шлюзом метаданные